import UIKit

@available(iOS 2.0, *)
extension QKC where AA :UITabBarController {
    open func viewControllers_qk_s(_ viewControllers:  [UIViewController]?) -> QKC<AA,YY,ZZ, [UIViewController]?>{
		return link(next: viewControllers).then_QK { $0.value.viewControllers = viewControllers }
	}
    open func viewControllers_qk_g() -> QKC<AA,YY,ZZ, [UIViewController]?>{
		 self +^ self.value.viewControllers
	}

		// This may return the "More" navigation controller if it exists.
     open func selectedViewController_qk_s(_ selectedViewController:  UIViewController? ) -> QKC<AA,YY,ZZ, UIViewController? >{
		return link(next: selectedViewController).then_QK { $0.value.selectedViewController = selectedViewController }
	}
     open func selectedViewController_qk_g() -> QKC<AA,YY,ZZ, UIViewController? >{
		 self +^ self.value.selectedViewController
	}

    open func selectedIndex_qk_s(_ selectedIndex:  Int) -> QKC<AA,YY,ZZ, Int>{
		return link(next: selectedIndex).then_QK { $0.value.selectedIndex = selectedIndex }
	}
    open func selectedIndex_qk_g() -> QKC<AA,YY,ZZ, Int>{
		 self +^ self.value.selectedIndex
	}

		// Returns the "More" navigation controller, creating it if it does not already exist.
    open func moreNavigationController_qk_g() -> QKC<AA,YY,ZZ, UINavigationController >{
		 self +^ self.value.moreNavigationController
	}

		// If non-nil, then the "More" view will include an "Edit" button that displays customization UI for the specified controllers. By default, all view controllers are customizable.
    open func customizableViewControllers_qk_s(_ customizableViewControllers:  [UIViewController]? ) -> QKC<AA,YY,ZZ, [UIViewController]? >{
		return link(next: customizableViewControllers).then_QK { $0.value.customizableViewControllers = customizableViewControllers }
	}
    open func customizableViewControllers_qk_g() -> QKC<AA,YY,ZZ, [UIViewController]? >{
		 self +^ self.value.customizableViewControllers
	}

		// Provided for -[UIActionSheet showFromTabBar:]. Attempting to modify the contents of the tab bar directly will throw an exception.
    @available(iOS 3.0, *)
    open func tabBar_qk_g() -> QKC<AA,YY,ZZ, UITabBar >{
		 self +^ self.value.tabBar
	}

     open func delegate_qk_s(_ delegate:  UITabBarControllerDelegate?) -> QKC<AA,YY,ZZ, UITabBarControllerDelegate?>{
		return link(next: delegate).then_QK { $0.value.delegate = delegate }
	}
     open func delegate_qk_g() -> QKC<AA,YY,ZZ, UITabBarControllerDelegate?>{
		 self +^ self.value.delegate
	}

	// The "More" navigation controller will not be returned by -viewControllers, but it may be returned by -selectedViewController.
    open func setViewControllers_qk_f(_ viewControllers: [UIViewController]?, animated: Bool) -> QKC<AA,YY,ZZ, [UIViewController]?>{
		 self +^ self.value.setViewControllers(viewControllers, animated:animated) +^ viewControllers
	}

}

extension QKC where AA :UIViewController {
		// Automatically created lazily with the view controller's title if it's not set explicitly.
    open func tabBarItem_qk_s(_ tabBarItem:  UITabBarItem ) -> QKC<AA,YY,ZZ, UITabBarItem >{
		return link(next: tabBarItem).then_QK { $0.value.tabBarItem = tabBarItem }
	}
    open func tabBarItem_qk_g() -> QKC<AA,YY,ZZ, UITabBarItem >{
		 self +^ self.value.tabBarItem
	}

		// If the view controller has a tab bar controller as its ancestor, return it. Returns nil otherwise.
    open func tabBarController_qk_g() -> QKC<AA,YY,ZZ, UITabBarController? >{
		 self +^ self.value.tabBarController
	}

}

